package com.ks.user.controller;


import com.ks.core.base._ControllerBase;
import com.ks.core.core.Result;
//import com.ks.core.dto.SearchCriteriaBase;
import com.ks.user.aop.Author;
import com.ks.user.entity.OrgTenant;
import com.ks.user.service.IOrgTenantService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * <p>
 * 租户 前端控制器
 * </p>
 *
 * @author kingdee123
 * @since 2020-11-30
 */
@RestController
@RequestMapping("/orgTenant")
@Api(value = "租户用户模块", description = "租户用户模块")
public class OrgTenantController extends _ControllerBase {

    @Autowired
    private IOrgTenantService orgTenantService;

    /*
    本模块需要完成以下接口：模块名称：用户服务->租户服务模块
    租户申请入驻接口
    系统用户的租户申请列表查询接口（支持申请管理和其它模块的租户清单获取）
    租户申请通过/拒绝接口（隐含自动创建组织根结点）
    租户的组织信息获取接口
    开启租户服务停止租户服务接口
    组织添加接口
    组织修改接口
    员工查询列表接口
    员工添加接口
    员工信息修改接口
    * */

    @PostMapping("/tenantApplay")
    @ApiOperation(value = "租户申请入驻接口", notes = "租户申请入驻接口")
    public Object tenantAplay(@RequestBody OrgTenant orgTenant) {
        /*
        租户的入驻申请与后台添加租户不同，不能使用同一个接口。租户入驻申请中需要包含联系人手机号以及它的验证码
        传入参数需要单独的数据结构
        * */
        int i = orgTenantService.addOrgTenant(orgTenant);
        return Result.success(i);
    }

    @PostMapping("/addTenant")
    @ApiOperation(value = "添加租户接口（后台使用）", notes = "添加租户接口（后台使用）")
    public Object addOrgTenant(@RequestBody OrgTenant orgTenant) {
        int i = orgTenantService.addOrgTenant(orgTenant);
        return Result.success(i);
    }

    @PostMapping("/updateTenant")
    @ApiOperation(value = "修改租户接口（后台使用）", notes = "修改租户接口（后台使用）")
    public Object updateOrgTenant(@RequestBody OrgTenant orgTenant) {
        int i = orgTenantService.updateOrgTenant(orgTenant);
        return Result.success(i);
    }

    @GetMapping("/getTenantInfo")
    @ApiOperation(value = "根据租户后台地址的串来获取租户信息", notes = "根据租户后台地址的串来获取租户信息")
    public Object getTenantInfo(@RequestParam String SystemRootUrl) {
        OrgTenant rootUrl = orgTenantService.getSystemRootUrl(SystemRootUrl);
        return Result.success(rootUrl);
    }

    @PostMapping("/getInfo")
    @ApiOperation(value = "租户信息获取", notes = "根据token获取租户信息")
    public Object getInfo() {
        OrgTenant orgTenantInfo = orgTenantService.getOrgTenantInfo(getContext());
        return Result.success(orgTenantInfo);
    }


    @PostMapping("/getTenantList")
    @ApiOperation(value = "租户信息获取列表", notes = "租户信息获取列表")
    public Object getTenantList() {
        Map<String, Object> tenantList = orgTenantService.getTenantList();
        return Result.success(tenantList);
    }

    @PostMapping("/getTenantAdminCount")
    @ApiOperation(value = "入驻企业数", notes = "入驻企业数")
    public Object getTenantAdminCount() {
        Map<String, Object> tenantAdminCount = orgTenantService.getTenantAdminCount(getContext());
        return Result.success(tenantAdminCount);
    }

}

